<template>
  <el-dialog  v-model="state.isShowDialog" width="350px">
  <el-form size="large" class="login-content-form">
    <el-form-item class="login-animation1">
      <el-input text :placeholder="$t('message.mobile.placeholder1')" v-model="state.userNameShow" clearable autocomplete="off" disabled>
        <template #prefix>
          <i class="iconfont icon-dianhua el-input__icon"></i>
        </template>
      </el-input>
    </el-form-item>
    <el-form-item class="login-animation2">
      <el-col :span="15">
        <el-input text maxlength="4" :placeholder="$t('message.mobile.placeholder2')" v-model="state.ruleForm.code" clearable autocomplete="off">
          <template #prefix>
            <el-icon class="el-input__icon"><ele-Position /></el-icon>
          </template>
        </el-input>
      </el-col>
      <el-col :span="1"></el-col>
      <el-col :span="8">
        <el-button v-waves class="login-content-code" @click="getCode" v-if="!state.clicked">{{ $t('message.mobile.codeText') }}
        </el-button>
        <el-countdown
            format="mm:ss"
            :value="state.cutDown"
            v-if="state.clicked"
            style="margin-left: 30px"
            @finish="state.clicked = false"
        />
      </el-col>
    </el-form-item>
    <el-form-item class="login-animation3">
      <el-button round type="primary" v-waves class="login-content-submit" @click="checkSms">
        <span>校 验</span>
      </el-button>
    </el-form-item>
  </el-form>
  </el-dialog>
</template>

<script setup lang="ts" name="loginMobile">
import { reactive } from 'vue';
import {userApi} from "/@/api/user"
import {ElMessage} from "element-plus";

const {getLoginSms,checkLoginSms} = userApi()
const emit = defineEmits(['signIn']);
// 定义变量内容
const state = reactive({
  ruleForm: {
    userName: '',
    code: '',
  },
  userNameShow:'',
  cutDown: 0,
  isShowDialog:false,
  clicked:false
});
async function getCode() {
  const res = await getLoginSms(
      {
        id: state.ruleForm.userName,
      }
  )
  if(res.status === 200){
    state.clicked = true;
    state.cutDown = Date.now() + 600000;
    ElMessage.success(res.data)
  }else{
    ElMessage.error(res.data)
  }

}
async function checkSms() {
  const res = await checkLoginSms(state.ruleForm)
  if(res.status === 200){
    emit('signIn');
    closeDialog()
  }else{
    ElMessage.error(res.data)
  }
}
const closeDialog = () => {
  state.isShowDialog = false;
};
const openDialog = (userName: string) => {
  state.ruleForm.userName = userName;
  state.userNameShow = userName.slice(0, 3) + '****' + userName.slice(-4);
  state.isShowDialog = true;
};

// 暴露变量
defineExpose({
  openDialog,
});
</script>

<style scoped lang="scss">
.login-content-form {
  margin-top: 20px;
  @for $i from 1 through 4 {
    .login-animation#{$i} {
      opacity: 0;
      animation-name: error-num;
      animation-duration: 0.5s;
      animation-fill-mode: forwards;
      animation-delay: calc($i/10) + s;
    }
  }
  .login-content-code {
    width: 100%;
    padding: 0;
  }
  .login-content-submit {
    width: 100%;
    letter-spacing: 2px;
    font-weight: 300;
    margin-top: 15px;
  }
  .login-msg {
    color: var(--el-text-color-placeholder);
  }
}
</style>
